const Vue = function(options){
    this.$options = options
}
const mount = Vue.prototype.$mount
Vue.prototype.$mount = function (
  el,
  hydrating
){
//   el = el && query(el)

//   /* istanbul ignore if */
//   if (el === document.body || el === document.documentElement) {
//     __DEV__ &&
//       warn(
//         `Do not mount Vue to <html> or <body> - mount to normal elements instead.`
//       )
//     return this
//   }

  const options = this.$options
  // resolve template/el and convert to render function
  if (!options.render) {
    let template = options.template
    if (template) {
      if (typeof template === 'string') {
        // if (template.charAt(0) === '#') {
        //   template = idToTemplate(template)
        //   /* istanbul ignore if */
        //   if (__DEV__ && !template) {
        //     warn(
        //       `Template element not found or is empty: ${options.template}`,
        //       this
        //     )
        //   }
        // }
      } else if (template.nodeType) {
        template = template.innerHTML
      } else {
        // if (__DEV__) {
        //   warn('invalid template option:' + template, this)
        // }
        return this
      }
    } else if (el) {
      // @ts-expect-error
    //   template = getOuterHTML(el)
    }
    if (template) {
      /* istanbul ignore if */
    //   if (__DEV__ && config.performance && mark) {
    //     mark('compile')
    //   }

    //   const { render, staticRenderFns } = compileToFunctions(
    //     template,
    //     {
    //       outputSourceRange: __DEV__,
    //       shouldDecodeNewlines,
    //       shouldDecodeNewlinesForHref,
    //       delimiters: options.delimiters,
    //       comments: options.comments
    //     },
    //     this
    //   )
    //   options.render = render
    //   options.staticRenderFns = staticRenderFns

    //   /* istanbul ignore if */
    //   if (__DEV__ && config.performance && mark) {
    //     mark('compile end')
    //     measure(`vue ${this._name} compile`, 'compile', 'compile end')
    //   }
    }
  }
  return mount.call(this, el, hydrating)
}

 new Vue({el:'1'}).$mount('el')
